﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using BL.Entities;
using System.Data.OleDb;
using System.Globalization;



namespace zCO
{
    public partial class frmListaPrestaciones : Form
    {
        ColeccionIntervenciones ciAdd;
        ColeccionIntervenciones ciUpdate;
        string starkey = " ";
        string halfStarkey = " ";
        public frmListaPrestaciones()
        {
            InitializeComponent();
        }

        private void textBox1_TextChanged(object sender, EventArgs e)
        {
            //ColeccionObrasSociales obras = new ColeccionObrasSociales();
            //if (textBox1.Text != "")
            //{
            //    obras = ColeccionObrasSociales.LoadObraSocial(textBox1.Text);
            //}
            //foreach (ObraSocial o in obras)
            //{

            //    textBox1.AutoCompleteCustomSource.Add(o.NombreObra);

            //}

        }

        //private void textBox2_TextChanged(object sender, EventArgs e)
        //{
        //  ColeccionProfesionales prof = new ColeccionProfesionales();
        //    if (textBox2.Text != "")
        //    {
        //        prof = ColeccionProfesionales.LoadProfesional(textBox2.Text);
        //    }
        //    foreach (Profesionales p in prof)
        //    {

        //        textBox2.AutoCompleteCustomSource.Add(p.Apellido.ToString());

        //    }


        //}

        private void button1_Click(object sender, EventArgs e)
        {
            CargarGrilla();
        }


        private void button3_Click(object sender, EventArgs e)
        {
            int cant = checkChanges();
            if (cant > 0&&cant<999999)
            {

                DialogResult dr = MessageBox.Show("Se modificaron " + cant.ToString() + " registros. ¿Desea Guardar los cambios?", "Editar Prestaciones", MessageBoxButtons.YesNoCancel);
                switch (dr)
                {
                    case DialogResult.Abort:
                        break;
                    case DialogResult.Cancel:
                        break;
                    case DialogResult.Ignore:
                        break;
                    case DialogResult.No:
                        break;
                    case DialogResult.None:
                        break;
                    case DialogResult.OK:
                        break;
                    case DialogResult.Retry:
                        break;
                    case DialogResult.Yes:
                        UpdateGrilla();
                       
                        break;
                    default:
                        break;
                }
            }

           
            
        }
        private void CargarGrilla()
        {
            ColeccionIntervenciones inter = new ColeccionIntervenciones();
            DataTable dt = new DataTable();
            dataGridView1.Rows.Clear();
            string NombreObra = textBox1.Text;
            string matricula = textBox2.Text;
            string paciente = textBox3.Text;
            DateTime fechaIni = dateTimePicker1.Value.Date;
            DateTime fechaEnd = dateTimePicker2.Value.Date;
            string estado = comboBox1.Text;
            string abonada = comboBox2.Text;
            DateTime fechaLiqIni = DateTime.MinValue;
            DateTime fechaLiqEnd = DateTime.MaxValue;
            Double totalFinal=0;
            bool refact = checkRefacturacion.Checked;
            if (checkBox1.Checked == true)
            {
                fechaLiqIni = dateTimePicker3.Value.Date;
                fechaLiqEnd = dateTimePicker4.Value.Date;
                inter = ColeccionIntervenciones.LoadObraSocial(NombreObra, matricula,paciente, estado, abonada, fechaIni, fechaEnd, fechaLiqIni, fechaLiqEnd,refact);
            }
            else
            {
                inter = ColeccionIntervenciones.LoadObraSocial(NombreObra, matricula,paciente, estado, abonada, fechaIni, fechaEnd,refact);
            }
            int count = inter.Count;
            int index = 0;
            Double total = 0;
            foreach (Intervenciones i in inter)
            {


                if (i.Abonada == "True")
                {
                    i.Abonada = "Si";
                }
                else
                {
                    i.Abonada = "No";
                }

                if (index != 0 && dataGridView1.Rows[index - 1].Cells[1].Value.ToString() != starkey && i.Matricula != Int32.Parse(dataGridView1.Rows[index - 1].Cells[1].Value.ToString()))
                {
                    string mat = dataGridView1.Rows[index - 1].Cells[1].Value.ToString();

                    dataGridView1.Rows.Add(starkey, starkey, halfStarkey + halfStarkey, halfStarkey + halfStarkey, starkey, starkey, starkey, "TOTAL " + dataGridView1.Rows[index - 1].Cells[2].Value.ToString(), total, starkey, starkey, starkey, starkey);
                    total = 0;
                    for (int a = 0; a < 13; a++)
                    {
                        if (a == 7 || a == 8)
                            dataGridView1.Rows[index].Cells[a].Style.BackColor = Color.ForestGreen;
                        else
                            dataGridView1.Rows[index].Cells[a].Style.BackColor = Color.DarkGray;

                    }
                    index++;
                }
                dataGridView1.Rows.Add(i.NombreObraSocial, i.Matricula, i.Apellido + i.Nombre, i.ApellidoAfiliado.ToUpper() + " " + i.NombreAfiliado, i.NumeroAfiliado, i.IdPrestacion, i.Elemento, i.Cara, i.Arancel, i.Estado, i.Abonada, i.Fecha.Substring(0, 10),i.Detalle, i.IdIntervencion);
                total += Double.Parse(dataGridView1.Rows[index].Cells[8].Value.ToString());
                index++;
            }
            if (index != 0 && dataGridView1.Rows[index - 1].Cells[1].Value.ToString() != starkey)
            {
                string matt = dataGridView1.Rows[index - 1].Cells[1].Value.ToString();

                dataGridView1.Rows.Add(starkey, starkey, halfStarkey + halfStarkey, halfStarkey + halfStarkey, starkey, starkey, starkey, "TOTAL "+dataGridView1.Rows[index - 1].Cells[2].Value.ToString(), total, starkey, starkey, starkey,starkey);
                for (int a = 0; a < 13; a++)
                {
                    if (a == 7 || a == 8)
                        dataGridView1.Rows[index].Cells[a].Style.BackColor = Color.ForestGreen;
                    else
                        dataGridView1.Rows[index].Cells[a].Style.BackColor = Color.DarkGray;

                }
            }
            foreach (Intervenciones i in inter)
            {
                totalFinal += i.Arancel;

            }
            if (index != 0)
            {
                dataGridView1.Rows.Add(starkey, starkey, halfStarkey + halfStarkey, halfStarkey + halfStarkey, starkey, starkey, starkey, "TOTAL GENERAL", totalFinal, starkey, starkey, starkey, starkey);
                for (int a = 0; a < 13; a++)
                {
                    if (a == 7 || a == 8)
                        dataGridView1.Rows[index + 1].Cells[a].Style.BackColor = Color.IndianRed;
                    else
                        dataGridView1.Rows[index + 1].Cells[a].Style.BackColor = Color.IndianRed;

                }
            }
        }
        private void UpdateGrilla()
        {
            frmProgressStatusBar frm = new frmProgressStatusBar();
            frm.Show();

            ColeccionIntervenciones inter = new ColeccionIntervenciones();
            foreach(var item in ciUpdate)
            {
                if (item.Estado == "aceptada" || item.Estado == "debitada")
                {
                    item.Estado = CultureInfo.InvariantCulture.TextInfo.ToTitleCase(item.Estado);
                }
                    if (item.Estado != "Aceptada" && item.Estado != "Debitada")
                    {
                        
                        MessageBox.Show("El campo: Estado debe ser igual a Aceptada o Debitada","Error");
                        frm.Close();
                        return;
                    }
                    if (item.Abonada == "si" || item.Abonada == "no")
                    {
                        item.Abonada = CultureInfo.InvariantCulture.TextInfo.ToTitleCase(item.Abonada);
                    }
                    if (item.Abonada != "Si" && item.Abonada != "No")
                    {
                        MessageBox.Show("El campo: Liquidada debe ser igual a Si o No","Error");
                        frm.Close();
                        return;

                    }
                    
                    ColeccionIntervenciones.UpdateObra(item.Matricula,item.NumeroAfiliado,item.IdPrestacion,item.Elemento,item.Cara,item.Estado,item.Abonada,DateTime.Parse(item.Fecha),item.Detalle,item.IdIntervencion);
            }

            frm.Close();
            CargarGrilla();
            MessageBox.Show("Campos actualizados con exito");

        }
        //private void UpdateGrilla()
        //{

        //    ColeccionIntervenciones inter = new ColeccionIntervenciones();
        //    int matr;
        //    string numafi;
        //    int idPrest;
        //    string elem;
        //    string cara;
        //    string nomO;
        //    string abnd;
        //    string estd;
        //    DateTime fech;
        //    int idInt;
        //    string detalle;
        //    for (int i = 0; i < (dataGridView1.Rows.Count - 1); i++)
        //    {


        //        if (dataGridView1.Rows[i].Cells[0].Value.ToString() != starkey)
        //        {
        //            nomO = dataGridView1.Rows[i].Cells[0].Value.ToString();
        //            matr = Int32.Parse(dataGridView1.Rows[i].Cells[1].Value.ToString());
        //            numafi = dataGridView1.Rows[i].Cells[4].Value.ToString();
        //            idPrest = Int32.Parse(dataGridView1.Rows[i].Cells[5].Value.ToString());
        //            elem = dataGridView1.Rows[i].Cells[6].Value.ToString();
        //            cara = dataGridView1.Rows[i].Cells[7].Value.ToString();
        //            estd = dataGridView1.Rows[i].Cells[9].Value.ToString().Substring(0, 1).ToUpper() + dataGridView1.Rows[i].Cells[9].Value.ToString().Substring(1);
        //            abnd = dataGridView1.Rows[i].Cells[10].Value.ToString().Substring(0, 1).ToUpper() + dataGridView1.Rows[i].Cells[10].Value.ToString().Substring(1);
        //            fech = DateTime.Parse(dataGridView1.Rows[i].Cells[11].Value.ToString());
        //            detalle = dataGridView1.Rows[i].Cells[12].Value.ToString();
        //            idInt = Int32.Parse(dataGridView1.Rows[i].Cells[13].Value.ToString());
        //            if (estd != "Aceptada" && estd != "Debitada")
        //            {
        //                MessageBox.Show("El campo: Estado debe ser igual a Aceptada o Debitada");
        //                for (int e = 0; e <= 12; e++)
        //                {
        //                    dataGridView1.Rows[i].Cells[e].Style.BackColor = Color.IndianRed;
        //                }
        //                return;
        //            }
        //            if (abnd != "Si" && abnd != "No")
        //            {
        //                MessageBox.Show("El campo: Abonada debe ser igual a Si o No");
        //                for (int e = 0; e <= 12; e++)
        //                {
        //                    dataGridView1.Rows[i].Cells[e].Style.BackColor = Color.IndianRed;
        //                }
        //                return;
        //            }
        //            ColeccionIntervenciones.UpdateObra(nomO, matr, numafi, idPrest, elem, cara, estd, abnd, fech, detalle, idInt);
        //        }
        //    }
        //    CargarGrilla();

        //    MessageBox.Show("Campos actualizados con exito");

        //}

        private void frmListaPrestaciones_FormClosing(object sender, FormClosingEventArgs e)
        {
            ColeccionIntervenciones cint;
                 int cant = checkChanges();
                 
                 if (cant > 0&&cant<999999)
                 {

                     DialogResult dr = MessageBox.Show("¿Desea Guardar los cambios?", "Editar Prestaciones", MessageBoxButtons.YesNoCancel);
                     switch (dr)
                     {
                         case DialogResult.Abort:
                             break;
                         case DialogResult.Cancel:
                             e.Cancel = true;
                             break;
                         case DialogResult.Ignore:
                             break;
                         case DialogResult.No:
                             break;
                         case DialogResult.None:
                             break;
                         case DialogResult.OK:
                             break;
                         case DialogResult.Retry:
                             break;
                         case DialogResult.Yes:
                             
                                 UpdateGrilla();
                                
                                 e.Cancel = false;
                             break;
                         default:
                             break;
                     }
                 }
                 else
                 {
                     e.Cancel = false;
                 }
        }

        private void cmdPrint_Click(object sender, EventArgs e)
        {
            Excel.Imprimir(dataGridView1, true);
        }

        private void cmdExcel_Click(object sender, EventArgs e)
        {
            //Excel.export(dataGridView1, true);
            try
            {
                DateTime fech = DateTime.Parse(dataGridView1.Rows[0].Cells[11].Value.ToString());
                Excel.generateExcelFromFile(dataGridView1, false, true, textBox1.Text, fech.ToString("MMMM").ToUpper(), fech.ToString("yyyy"));
            }
            catch (Exception)
            {
                //Probablemente cerraron el excel, habria q mejorar el control de errores ....
                
            }
            
        }

        private void frmListaPrestaciones_Load(object sender, EventArgs e)
        {

            textBox1.AutoCompleteMode = AutoCompleteMode.Append;
            textBox1.AutoCompleteSource = AutoCompleteSource.CustomSource;
            textBox2.AutoCompleteMode = AutoCompleteMode.Append;
            textBox2.AutoCompleteSource = AutoCompleteSource.CustomSource;
            textBox3.AutoCompleteMode = AutoCompleteMode.Append;
            textBox3.AutoCompleteSource = AutoCompleteSource.CustomSource;

            foreach (var item in ColeccionObrasSociales.Current) {
                textBox1.AutoCompleteCustomSource.Add(item.NombreObra.ToUpper());
            }
                        
            foreach (var item in ColeccionProfesionales.Current)
            {
                if (item.Activo == true)
                {
                    textBox2.AutoCompleteCustomSource.Add(item.Apellido.ToUpper());
                }
            }

            foreach (var item in ColeccionPacientesForm.Current)
            {
                
                    textBox3.AutoCompleteCustomSource.Add(item.Apellido.ToUpper());
            }



        }

        private void dataGridView1_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e)
        {

            DataGridViewTextBoxEditingControl te = (DataGridViewTextBoxEditingControl)e.Control;
            te.AutoCompleteMode = AutoCompleteMode.Append;
            te.AutoCompleteSource = AutoCompleteSource.CustomSource;
            int i = 0;
            if (e.Control is DataGridViewTextBoxEditingControl && ((DataGridView)sender).CurrentCell.ColumnIndex == 0)
            {
                MessageBox.Show("El nombre de la obra social deberá modificarse desde el menú en: Obras sociales-->Modificar/Eliminar","Error");
                
            }
            if (e.Control is DataGridViewTextBoxEditingControl && ((DataGridView)sender).CurrentCell.ColumnIndex == 2)
            {
                MessageBox.Show("El nombre del Profesional deberá modificarse desde el menú en: Profesionales-->Modificar/Eliminar","Error");

            }
            if (e.Control is DataGridViewTextBoxEditingControl && ((DataGridView)sender).CurrentCell.ColumnIndex == 3)
            {
                MessageBox.Show("El nombre del Afiliado deberá modificarse desde el menú en: Pacientes-->Modificar/Eliminar","Error");

            }
            if (e.Control is DataGridViewTextBoxEditingControl && ((DataGridView)sender).CurrentCell.ColumnIndex == 8)
            {
                MessageBox.Show("El Arancel de la prestación deberá modificarse desde el menú en: Prestaciones-->Modificar/Eliminar", "Error");

            }
            if (e.Control is DataGridViewTextBoxEditingControl && ((DataGridView)sender).CurrentCell.ColumnIndex == 9)
            {
                string[] est = new string[2];
                est[0] = "Aceptada";
                est[1] = "Debitada";
                foreach (string item in est)
                {
                    if (item != null)
                    {
                        
                        
                        te.AutoCompleteCustomSource.Add(est[i]);
                        i++;
                    }
                }
            }
            if (e.Control is DataGridViewTextBoxEditingControl && ((DataGridView)sender).CurrentCell.ColumnIndex == 10)
            {
                string[] abo = new string[2];
                abo[0] = "Si";
                abo[1] = "No";
                foreach (string item in abo)
                {
                    if (item != null)
                    {


                        te.AutoCompleteCustomSource.Add(abo[i]);
                        i++;
                    }
                }
            }
            
        }

        private void checkBox1_CheckedChanged(object sender, EventArgs e)
        {
            if (checkBox1.Checked == true)
            {
                dateTimePicker3.Visible = true;
                dateTimePicker4.Visible = true;
                label8.Visible = true;
                label9.Visible = true;
            }
            else
            {
                dateTimePicker3.Visible = false;
                dateTimePicker4.Visible = false;
                label8.Visible = false;
                label9.Visible = false;
            }
            }

        private void dataGridView1_CellMouseClick(object sender, DataGridViewCellMouseEventArgs e)
        {
            if (e.RowIndex >= 0 && e.ColumnIndex >= 0 && e.Button == MouseButtons.Right)
            {
                dataGridView1.Rows[e.RowIndex].Selected = true;
                Rectangle r = dataGridView1.GetCellDisplayRectangle(e.ColumnIndex, e.RowIndex, true);
                contextMenuStrip1.Show((Control)sender, r.Left + e.X, r.Top + e.Y);
            }
        }

        private void eliminarToolStripMenuItem_Click(object sender, EventArgs e)
        {
            DialogResult dr=new DialogResult();
            int cant=dataGridView1.SelectedRows.Count;
            dr = MessageBox.Show("¿Desea eliminar "+cant+" registro/s selecionado/s? ", "Eliminar Intervencion/es", MessageBoxButtons.YesNo);
            switch (dr)
            {
                case DialogResult.Abort:
                    break;
                case DialogResult.Ignore:
                    break;
                case DialogResult.No:
                    break;
                case DialogResult.None:
                    break;
                case DialogResult.OK:
                    break;
                case DialogResult.Retry:
                    break;
                case DialogResult.Yes:
                    int matr, idPrest, idInt;
            string numafi, elem, cara, nomO, abnd, estd, detalle;
            DateTime fech;
            DataGridViewRow selected = new DataGridViewRow();
            for (int i = 0; i < cant; i++)
            {
                selected = dataGridView1.SelectedRows[0];
                try
                {
                    nomO = dataGridView1.Rows[selected.Index].Cells[0].Value.ToString();
                    matr = Int32.Parse(dataGridView1.Rows[selected.Index].Cells[1].Value.ToString());
                    numafi = dataGridView1.Rows[selected.Index].Cells[4].Value.ToString();
                    idPrest = Int32.Parse(dataGridView1.Rows[selected.Index].Cells[5].Value.ToString());
                    elem = dataGridView1.Rows[selected.Index].Cells[6].Value.ToString();
                    cara = dataGridView1.Rows[selected.Index].Cells[7].Value.ToString();
                    estd = dataGridView1.Rows[selected.Index].Cells[9].Value.ToString().Substring(0, 1).ToUpper() + dataGridView1.Rows[selected.Index].Cells[9].Value.ToString().Substring(1);
                    abnd = dataGridView1.Rows[selected.Index].Cells[10].Value.ToString().Substring(0, 1).ToUpper() + dataGridView1.Rows[selected.Index].Cells[10].Value.ToString().Substring(1);
                    fech = DateTime.Parse(dataGridView1.Rows[selected.Index].Cells[11].Value.ToString());
                    detalle = dataGridView1.Rows[selected.Index].Cells[12].Value.ToString();
                    idInt = Int32.Parse(dataGridView1.Rows[selected.Index].Cells[13].Value.ToString());
                    ColeccionIntervenciones.DeleteRow(nomO, matr, numafi, idPrest, elem, cara, estd, abnd, fech, detalle, idInt, "false");
                    dataGridView1.Rows.Remove(selected);
                }
                catch (Exception ex)
                {
                    MessageBox.Show("Celda no disponible para eliminar,seleccione una intervencion");
                }
            }
            CargarGrilla();
            break;
                default:
                    break;
            }
            
        }
        private int checkChanges()
        {
            int cant = 0;

            int ini;
            Intervenciones i;
            Intervenciones iOld;
            ciAdd = new ColeccionIntervenciones();
            ciUpdate = new ColeccionIntervenciones();
            
                for ( ini = 0; ini < (dataGridView1.Rows.Count - 2); ini++)
                 {
                    
                     if (dataGridView1[0, ini].Value.ToString() != " " && dataGridView1[1, ini].Value.ToString() != " " && dataGridView1[0, ini].Value != null && dataGridView1[1, ini].Value != null)
                     {

                         i = new Intervenciones();
                         int idInt = Int32.Parse(dataGridView1[13, ini].Value.ToString());
                         //ColeccionIntervenciones cint = new ColeccionIntervenciones();
                         iOld = ColeccionIntervenciones.Current.FindByID(idInt);
                         i.NombreObraSocial = dataGridView1[0, ini].Value.ToString();
                         try
                         {
                             i.Matricula = Int32.Parse(dataGridView1[1, ini].Value.ToString());
                         }
                         catch
                         { 
                             dataGridView1[1, ini].Value = iOld.Matricula;
                             dataGridView1[1, ini].Style.BackColor = Color.IndianRed;
                             cant=999999;
                             MessageBox.Show("Formato de Matricula Incorrecto: debe ser numerico", "Error");
                         }
                         i.NumeroAfiliado = dataGridView1[4, ini].Value.ToString();
                          try
                         {
                         i.IdPrestacion = Int32.Parse(dataGridView1[5, ini].Value.ToString());
                         }
                          catch
                          {
                              dataGridView1[5, ini].Value = iOld.IdPrestacion;
                              dataGridView1[5, ini].Style.BackColor = Color.IndianRed;
                              cant = 999999;
                              MessageBox.Show("Formato de Prestacion Incorrecto: debe ser numerico", "Error");
                          }
                         i.Elemento = dataGridView1[6, ini].Value.ToString();
                         i.Cara = dataGridView1[7, ini].Value.ToString();
                         i.Estado = dataGridView1[9, ini].Value.ToString();
                         i.Abonada = dataGridView1[10, ini].Value.ToString();
                         i.Fecha = dataGridView1[11, ini].Value.ToString();
                         i.Detalle = dataGridView1[12, ini].Value.ToString();
                         i.IdIntervencion = idInt;

                         DateTime Fecha = DateTime.Parse(iOld.Fecha);
                         string fech = Fecha.ToString("dd/MM/yyyy");
                         if (iOld.Abonada == "True")
                         {
                             iOld.Abonada = "Si";
                         }
                         else if(iOld.Abonada=="False")
                         {
                             iOld.Abonada = "No";
                         }
                         iOld.Fecha = fech;

                         if (iOld == null)
                         {

                             ciAdd.Add(i);
                             cant++;
                         }
                         if (iOld.Matricula != i.Matricula)
                         {
                             Intervenciones iMat;
                             iMat = ColeccionIntervenciones.Current.FindByMat(i.Matricula);
                             if (iMat==null)
                                 {
                                     MessageBox.Show("La matricula ingresada no existe en la base de datos, para ingresar un nuevo profesional dirijase al menú:Profesionales-->Agregar", "Error");
                                     dataGridView1[1, ini].Value = iOld.Matricula;
                                     dataGridView1[1, ini].Style.BackColor = Color.IndianRed;
                                     cant= 999999;
                                 }
                             ciUpdate.Add(i);
                             cant++;
                         
                         }
                         if (iOld.NumeroAfiliado != i.NumeroAfiliado )
                         {
                             Intervenciones iNumAf;
                             iNumAf = ColeccionIntervenciones.Current.FindByNumAf(i.NumeroAfiliado);
                             if (iNumAf == null)
                             {
                                 MessageBox.Show("El número de afiliado ingresado no existe en la base de datos, para ingresar un nuevo afiliado dirijase al menú:Pacientes-->Agregar", "Error");
                                 dataGridView1[4, ini].Value = iOld.NumeroAfiliado;
                                 dataGridView1[4, ini].Style.BackColor= Color.IndianRed;
                                 cant= 999999;
                             }
                             ciUpdate.Add(i);
                             cant++;

                         }
                         if (iOld.IdPrestacion != i.IdPrestacion )
                         {
                             Intervenciones iPrest;
                             iPrest = ColeccionIntervenciones.Current.FindByIdPrest(i.IdPrestacion);
                             if (iPrest == null)
                             {
                                 MessageBox.Show("El número de prestación ingresado no existe en la base de datos, para ingresar una nueva prestación dirijase al menú:Prestaciones-->Agregar", "Error");
                                 dataGridView1[5, ini].Value = iOld.IdPrestacion;
                                 dataGridView1[5, ini].Style.BackColor = Color.IndianRed;
                                 cant= 999999;
                             }
                             ciUpdate.Add(i);
                             cant++;

                         }
                         if (iOld.Elemento != i.Elemento || iOld.Cara != i.Cara || iOld.Detalle != i.Detalle)
                         {
                             
                             ciUpdate.Add(i);
                             cant++;
                         }
                         if (iOld.Estado != i.Estado)
                         {
                             if (i.Estado != "Aceptada" && i.Estado != "Debitada" && i.Estado != "aceptada" && i.Estado != "debitada")
                             {

                                 MessageBox.Show("El campo: Estado debe ser igual a Aceptada o Debitada", "Error");
                                 dataGridView1[9, ini].Value = iOld.Estado;
                                 dataGridView1[9, ini].Style.BackColor = Color.IndianRed;
                                 cant = 999999;
                                
                             }
                             ciUpdate.Add(i);
                             cant++;
                         
                         }
                         if (iOld.Abonada != i.Abonada)
                         {
                             if (i.Abonada != "Si" && i.Abonada != "No" && i.Abonada != "si" && i.Abonada != "no")
                             {

                                 MessageBox.Show("El campo: Liquidad debe ser igual a Si o No", "Error");
                                 dataGridView1[10, ini].Value = iOld.Abonada;
                                 dataGridView1[10, ini].Style.BackColor = Color.IndianRed;
                                 cant = 999999;

                             }
                             ciUpdate.Add(i);
                             cant++;

                         }
                         if (iOld.Fecha != i.Fecha)
                         {
                             DateTime Test;
                             if (DateTime.TryParseExact(i.Fecha, "dd/MM/yyyy", null, DateTimeStyles.None, out Test) == false)
                             { MessageBox.Show("El formato de fecha no es correcto", "Error");
                                dataGridView1[11, ini].Value = iOld.Fecha;
                                dataGridView1[11, ini].Style.BackColor = Color.IndianRed;
                                cant = 999999;
                             }
                                else
                                 ciUpdate.Add(i);
                                cant++;



                         }

                     
                     
                }
                
            }

            return cant;
        }
        private void Guardar()
        {

            foreach (var item in ciAdd)
            {
                item.Save();

            }

            foreach (var item in ciUpdate)
            {
                item.SaveUpdate();
            }
            ColeccionIntervenciones.Current.Clear();
            ColeccionIntervenciones.Current = null;
           
        }


    }
}
